package com.freewater.springboot.demo.aop.apectj.ltwexample;

import com.freewater.springboot.demo.aop.apectj.ltwexample.service.SomeBusinessService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

// 需要在idea运行参数配置jvm参数：
// -javaagent:path-to-spring-instrument.jar
// 由于Spring Instrument负责调用AspectJ的来编织对象（根据这些配置：AppConfig、ProfilingAspect及aop.xml），
// 此时被编织的Class对象不能已经加载到内存;即被编织的类不能被Spring容器管理，否则在Spring Instrument调用AspectJ之前Class对象就已经加载到内存了，因此编织无效。
// 所以SomeBusinessService不能被Spring容器管理。
public class MainXml {
    public static void main(String[] args) {
        final ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("ltwexample.xml", Main.class);
        applicationContext.registerShutdownHook();
        // 直接通过new关键字
        SomeBusinessService someBusinessService = new SomeBusinessService();
        someBusinessService.doSomeBusiness("world");
    }
}
